package br.com.FII.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;

import br.com.FII.anotation.IntervaloString;

/**
 * The persistent class for the assunto database table.
 */
@Entity
@SequenceGenerator( name = "seq_assunto", sequenceName = "assunto_cod_assunto_seq", allocationSize = 1 )
public class Assunto implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue( generator = "seq_assunto", strategy = GenerationType.SEQUENCE )
	@Column( name = "cod_assunto" )
	private Integer codAssunto;

	@IntervaloString( minimumValue = 3, maximumValue = 255 )
	private String assunto;

	//bi-directional many-to-one association to Fotografia
	@OneToMany( mappedBy = "assunto" )
	private List<Fotografia> fotografias;

	public Assunto() {
	}

	public Integer getCodAssunto() {
		return this.codAssunto;
	}

	public void setCodAssunto( Integer codAssunto ) {
		this.codAssunto = codAssunto;
	}

	public String getAssunto() {
		return this.assunto;
	}

	public void setAssunto( String assunto ) {
		this.assunto = assunto;
	}

	public List<Fotografia> getFotografias() {
		return this.fotografias;
	}

	public void setFotografias( List<Fotografia> fotografias ) {
		this.fotografias = fotografias;
	}

	public Fotografia addFotografia( Fotografia fotografia ) {
		getFotografias().add( fotografia );
		fotografia.setAssunto( this );

		return fotografia;
	}

	public Fotografia removeFotografia( Fotografia fotografia ) {
		getFotografias().remove( fotografia );
		fotografia.setAssunto( null );

		return fotografia;
	}

}